package com.weather.job;

import com.weather.domain.City;
import com.weather.domain.WeatherResponse;
import com.weather.service.CityService;
import com.weather.service.WeatherService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import javax.xml.crypto.Data;
import java.util.Date;
import java.util.List;

/**
 * 这是一个定时任务
 */
@Service
public class TimerTaskJob {
    @Autowired
    RedisTemplate redisTemplate;

    @Autowired
    CityService cityService;  //获取城市列表数据
    @Autowired
    WeatherService weatherService;
    @Scheduled(cron="0 0 */12 * * ?") // 每6小时更新一次缓存（可调整）
    public void cacheWeatherDataJob(){
        System.out.println("开始批量更新天气缓存：" + new Date());

        // 获取所有城市数据（而非仅前3条）
        List<City> cityList = cityService.getAllCities(); // 需要在CityService中添加该方法

        for(City city : cityList){
            // 无论缓存是否存在，都更新一次（保证数据新鲜度）
            WeatherResponse weatherResponse = weatherService.fetchWeatherData(city.getCityId());
            System.out.println("更新城市[" + city.getCity() + "]的天气数据");
            redisTemplate.opsForHash().put("hc_weather_data", city.getCityId(), weatherResponse);
        }

        System.out.println("天气缓存批量更新完成");
    }

}